\documentclass[11pt, a4paper]{article}
%\usepackage[spanish]{babel}
\usepackage{a4wide}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{verbatim}
\usepackage{todonotes}
\usepackage{amsmath}
\usepackage{url}

\usepackage{tikz}
\usetikzlibrary{decorations.markings,arrows}

\parindent = 0 pt
\parskip = 5 pt

\newcommand{\real}{\hbox{\bf R}}

\begin{document}
\begin{center}
\begin{tabular}{r|cr}
 \begin{tabular}{c}
{\large\bf\textsf{\ M\'etodos Num\'ericos\ }}\\ 
Segundo Cuatrimestre 2014\\
{\bf Trabajo Pr\'actico 2}\\
\end{tabular} &
\begin{tabular}{@{} p{1.6cm} @{}}
\includegraphics[width=1.6cm]{logodpt.jpg}
\end{tabular} &
\begin{tabular}{l @{}}
 \emph{Departamento de Computaci\'on} \\
 \emph{Facultad de Ciencias Exactas y Naturales} \\
 \emph{Universidad de Buenos Aires} \\
\end{tabular} 
\end{tabular}
\vskip 10pt
\textbf{\Large Tirate un qu\'e, tirate un \emph{ranking}...}
\end{center}

\vskip 10pt
\hrule
\vskip 5pt

\noindent\textbf{Motivaci\'on}
\vskip 5pt

Luego de su repentina y ef\'imera irrupci\'on durante el a\~no 2011, un grupo de la movida tropical\footnote{Por
cuestiones de privacidad, no haremos p\'ublico de qu\'e grupo se trata.} est\'a buscando recuperar la notoriedad y los niveles 
de popularidad otrora alcanzados. El retorno incluye, entre otras cosas, un mega recital gratuito, giras por las
principales \emph{bailantas} y por el interior del pa\'is.\footnote{A riesgo de exponer su edad, los miembros de la c\'atedra 
quieren destacar a aquellos pr\'oceres que llevaron a este g\'enero musical a las primeras planas, como Alcides, Sebasti\'an, 
Miguel \emph{Conejito} Alejandro, R\'afaga, La Nueva Luna, Comanche y, como dejar fuera, al \emph{MAESTRO} Antonio R\'ios.}

Para que toda esta movida sea exitosa, los miembros del grupo han acordado con su \emph{community manager} que, adem\'as de
tener una participaci\'on destacada en Pasi\'on de S\'abado, es necesario que la llegada a trav\'es de los medios electr\'onicos
y las redes sociales sea muy efectiva, al igual que en 2011, alcanzando a la mayor cantidad posible de gente y poder, nuevamente, 
sentarse en el living de \emph{la diva de los tel\'efonos}. La conclusi\'on a la que llegaron es que necesitan que cada vez que 
realiza una b\'usqueda relacionada con la movida tropical, su p\'agina se encuentre entre las primeras que muestran los buscadores.

Con ese motivo, se han contactado con el equipo de R+D de M\'etodos Num\'ericos, donde en la primera reuni\'on el cliente propuso
\emph{comprar clicks en publicidades}. Esta, si bien es una alternativa viable, representa un gasto importante para la escala de
inversi\'on con la que se dispone. Luego de una reuni\'on del equipo t\'ecnico, se les hizo una contrapropuesta:
estudiar el comportamiento de los buscadores y, a cambio de shows libres de costo y presentaciones privadas, buscar en qu\'e
p\'aginas conviene figurar para mejorar el posicionamiento virtual del grupo.
 
\vskip 5pt
\noindent\textbf{Contexto}
\vskip 5pt

A partir de la evoluci\'on de Internet durante la d\'ecada de 1990, el desarrollo de motores de b\'usqueda se ha convertido
en uno de los aspectos centrales para su efectiva utilizaci\'on. Hoy en d\'ia, sitios como Yahoo, Google y Bing ofrecen
distintas alternativas para realizar b\'usquedas complejas dentro de un red que contiene miles de millones de p\'aginas
web. 

En sus comienzos, una de las caracter\'isticas que distngui\'o a Google respecto de los motores de b\'usqueda de la \'epoca
fue la calidad de los resultados obtenidos, mostrando al usuario p\'aginas relevantes a la
b\'usqueda realizada. El esquema general de los or\'igenes de este motor de b\'usqueda es brevemente explicando en 
Brin y Page \cite{Brin1998}, donde se mencionan aspectos t\'ecnicos que van desde la etapa de obtenci\'on de
informaci\'on de las p\'aginas disponibles en la red, su almacenamiento e indexado y su posterior procesamiento,
buscando ordenar cada p\'agina de acuerdo a su importancia relativa dentro de la red. El algoritmo utilizado para esta
\'ultima etapa es denominado PageRank y es uno (no el \'unico) de los criterios utilizados para ponderar la importancia
de los resultados de una b\'usqueda. En este trabajo nos concentraremos en el estudio y desarrollo del algoritmo
PageRank.

\vskip 5pt
\noindent\textbf{Los m\'etodos, Parte I: PageRank}
\vskip 5pt

El algoritmo PageRank se basa en la construcci\'on del siguiente modelo. Supongamos que tenemos una red con $n$ p\'aginas 
web $Web = \{1,\dots,n\}$ donde
el objetivo es asignar a cada una de ellas un puntaje que determine la importancia relativa de la misma respecto de las
dem\'as. Para modelar las relaciones entre ellas, definimos la \emph{matriz de conectividad} $W \in \{0,1\}^{n \times n}$ 
de forma tal que $w_{ij} = 1$ si la p\'agina $j$ tiene un link a la p\'agina $i$, y $w_{ij} = 0$ en caso contrario. 
Adem\'as, ignoramos los \emph{autolinks}, es decir, links de una p\'agina a s\'i misma, definiendo $w_{ii} = 0$. Tomando 
esta matriz, definimos el grado de la p\'agina $j$, $n_j$, como la cantidad de links salientes hacia otras p\'aginas 
de la red, donde $n_j = \sum_{i = 1}^n w_{ij}$. Adem\'as, notamos con $x_j$ al puntaje asignado a la p\'agina $j\in
Web$, que es lo que buscamos calcular.

La importancia de una p\'agina puede ser modelada de diferentes formas. Un link de la p\'agina $u \in
Web$ a la p\'agina $v \in Web$ puede ser visto como que $v$ es una p\'agina importante. Sin embargo, no queremos que una
p\'agina obtenga mayor importancia simplemente porque es apuntada desde muchas p\'aginas. 
Una forma de limitar esto es ponderar los links utilizando la importancia de la p\'agina de origen. En otras palabras,
pocos links de p\'aginas importantes pueden valer m\'as que muchos links de p\'aginas poco importantes. En particular,
consideramos que la importancia de la p\'agina $v$ obtenida mediante el link de la p\'agina $u$ es proporcional a la 
importancia de la p\'agina $u$ e inversamente proporcional al grado de $u$. Si la p\'agina $u$ contiene $n_u$ links,
uno de los cuales apunta a la p\'agina $v$, entonces el aporte de ese link a la p\'agina $v$ ser\'a $x_u/n_u$. Luego,
sea $L_k \subseteq Web$ el conjunto de p\'aginas que tienen un link a la p\'agina $k$. Para cada p\'agina pedimos que
\begin{eqnarray}
x_k = \sum_{j \in L_k} \frac{x_j}{n_j},~~~~k = 1,\dots,n. \label{eq:basicmodel}
\end{eqnarray}
Definimos $P \in  \mathbb{R}^{n \times n}$ tal que $p_{ij} = 1/n_j$ si $w_{ij} = 1$, y $p_{ij} = 0$ en caso contrario. Luego,
el modelo planteado en (\ref{eq:basicmodel}) es equivalente a encontrar un $x\in \mathbb{R}^n$ tal que $Px = x$, es
decir, encontrar (suponiendo que existe) un autovector asociado al autovalor 1 de una matriz cuadrada, tal que $x_i \ge
0$ y $\sum_{i = 1}^n x_i = 1$. En
Bryan y Leise \cite{Bryan2006} y Kamvar et al. \cite[Secci\'on 1]{Kamvar2003} se analizan ciertas condiciones que debe
cumplir la red de p\'aginas para garantizar la existencia de este autovector.

Una interpretaci\'on equivalente para el problema es considerar al \emph{navegante aleatorio}. \'Este empieza en una
p\'agina cualquiera del conjunto, y luego en cada p\'agina $j$ que visita sigue navegando a trav\'es de sus links,
eligiendo el mismo con probabilidad $1/n_j$. Una situaci\'on particular se da cuando la p\'agina no tiene links salientes. En
ese caso, consideramos que el navegante aleatorio pasa a cualquiera de las p\'agina de la red con probabilidad $1/n$.
Para representar esta situaci\'on, definimos $v \in \mathbb{R}^{n \times n}$, con $v_i = 1/n$ y $d \in \{0,1\}^{n}$ donde 
$d_i = 1$ si $n_i = 0$, y $d_i = 0$ en caso contrario. La nueva matriz de transici\'on es 
\begin{eqnarray*}
D & = & v d^t \\
P_1 & = & P + D.
\end{eqnarray*}
Adem\'as, consideraremos el caso de que el navegante aleatorio, dado que se encuentra en la p\'agina $j$, decida visitar
una p\'agina cualquiera del conjunto, independientemente de si esta se encuentra o no referenciada por $j$ (fen\'omeno
conocido como \emph{teletransportaci\'on}). Para ello, consideramos que esta decisi\'on se toma con una probabilidad
$c \ge 0$, y podemos incluirlo al modelo de la siguiente forma:
\begin{eqnarray*}
E & = & v \bar{1}^t \\
P_2 & = & cP_1 + (1-c)E,
\end{eqnarray*}
\noindent donde $\bar{1} \in \mathbb{R}^n$ es un vector tal que todas sus componenetes valen 1. La matriz resultante
$P_2$ corresponde a un enriquecimiento del modelo formulado en (\ref{eq:basicmodel}). Probabil\'isticamente, la
componente $x_j$ del vector soluci\'on (normalizado) del sistema $P_2 x = x$ representa la proporci\'on del tiempo que,
en el largo plazo, el navegante aleatorio pasa en la p\'agina $j \in Web$.

En particular, $P_2$ corresponde a una
matriz \emph{estoc\'astica por columnas} que cumple las hip\'otesis planteadas en Bryan y Leise \cite{Bryan2006} y
Kamvar et al. \cite{Kamvar2003}, tal que $P_2$ tiene un autovector asociado al autovalor 1, los dem\'as autovalores de
la matriz cumplen $1 = \lambda_1 > |\lambda_2| \ge \dots \ge |\lambda_n|$ y, adem\'as, la dimensi\'on
del autoespacio asociado al autovalor $\lambda_1$ es 1. Luego, la soluci\'on al sistema $P_2 x = x$ puede ser calculada
de forma est\'andar utilizando el m\'etodo de la potencia.

Una vez calculado el ranking, se retorna al usuario las $t$ p\'aginas con mayor ranking.

\vskip 5pt
\noindent\textbf{Los m\'etodos, Parte II: Hyperlink-Induced Topic Search}
\vskip 5pt

Un m\'etodo alternativo es propuesto en Kleinberg \cite{Kleinberg}, denominado \emph{Hyperlink-Induced Topic Search} (HITS). La 
intuici\'on del m\'etodo se basa en el an\'alisis intr\'iniseco de la red, donde una noci\'on de \emph{autoridad} se 
transfiere de una p\'agina a otra mediante los links que las relacionan. El objetivo es, dada una b\'usqueda concreta,
retornar un subconjunto acotado de p\'aginas relevantes. Con este fin, se considera que existen p\'aginas que cumplen un 
rol de \emph{autoridad} sobre un tema espec\'ifico y se busca modelar la relaci\'on entre estas p\'aginas y aquellas que 
apuntan a varias de estas autoridades, denominadas \emph{hubs}. En la pr\'actica, los autores observan que suele existir
una especie de equilibrio en la relaci\'on entre hubs y autoridades, y se busca aprovechar esta relaci\'on para el desarrollo
del algoritmo. Intuitivamente, un buen \emph{hub} es una p\'agina que apunta a muchas autoridades, y una buena \emph{autoridad}
es una p\'agina que es apuntada por muchos \emph{hubs}.

El procedimiento consiste en los siguientes pasos. Dada una b\'usqueda concreta, se utiliza en primer lugar un \emph{buscador}
simple (por ejemplo, basado en texto) para obtener un conjunto acotado de paginas (digamos, 200), llamado \emph{root set}. 
Luego, asumiendo que la estructura de la red es conocida, es busca extender este conjunto agregando p\'aginas que son apuntadas
y que apuntan a las p\'aginas de \emph{root set}, hasta llegar a una sub-red de un tama\~no determinado. En el contexto del
trabajo pr\'actico, asumiremos que este paso ha sido realizado y que contamos con el grafo que considera la sub-red.

Formalmente, y retomando la notaci\'on introducida en la secci\'on anterior, consideramos que las p\'aginas de nuestra sub-red
se encuentran en el conjunto $Web = \{1,\dots,n\}$. Para modelar las relaciones entre las p\'aginas, adoptamos una definici\'on 
similar: consideramos la matriz de adyacencia $A \in \{0,1\}^{n \times n}$ donde $a_{ij} = 1$ si existe un link de la p\'agina
$i$ a la p\'agina $j$.\footnote{Notar que $A = W^t$.} Para cada p\'agina $i \in Web$ se considera el \emph{peso de autoridad} $x_i$ 
y el \emph{peso de hub} $y_i$. Consecuentemente, se definen los vectores $x,y \in \mathbb{R}^n$ los vectores de pesos de autoridad
y hubs, respectivamente, y supondremos adem\'as que se encuentran normalizados. Las p\'aginas con mayores valores de $x_i$ e $y_i$
son consideradas mejores \emph{autoridades} y \emph{hubs}, respectivamente.

La relaci\'on mencionada entre los distintos tipos de p\'aginas se expresan num\'ericamente de la siguiente forma. Dados los
vectores $x,y$, la operaci\'on de transferencia de los \emph{hubs} a la autoridad $j \in Web$ puede expresarse de la siguiente forma:
\begin{equation}
x_j = \sum_{i: i \to j} y_i. \label{eq:auth-update}
\end{equation}
An\'alogamente, el peso de un hub est\'a dado por la siguiente ecuaci\'on
\begin{equation}
y_i = \sum_{j: i \to j} x_j. \label{eq:hub-update}
\end{equation}

Las ecuaciones (\ref{eq:auth-update}) y (\ref{eq:hub-update}) podemos expresarlas matricialmente de la siguiente manera:
\begin{eqnarray}
x & = & A^ty \label{eq:auth-update-math} \\
y & = & Ax, \label{eq:hub-update-math} 
\end{eqnarray}
aplicando luego el paso de normalizaci\'on correspondiente. Los autores proponen comenzar con un $y_0$ incial, aplicar estas ecuaciones 
iterativamente y demuestran que, bajo ciertas condiciones, el m\'etodo converge. Finalmente, en base a los rankings obtenimos, se retorna
al usuario las mejores $t$ \emph{autoridades} y los mejores $t$ \emph{hubs}.

\vskip 5pt
\noindent\textbf{Enunciado}
\vskip 5pt

El objetivo del trabajo es experimentar en el contexto planteado utilizando los algoritmos de ranking propuestos. Para ello, se considera
un entorno que, dentro de nuestras posibilidades, simule el contexto real de aplicaci\'on donde se abordan instancias de gran escala (es
decir, $n$, el n\'umero total de p\'aginas, es grande). El archivo tomar\'a como entrada un archivo que especifique el algoritmo, los
par\'ametros del mismo y un puntero al grafo de la red y retorne como resultado el ranking obtenido para cada p\'agina. Los detalles sobre 
el input/output del programa son especificados en la siguiente secci\'on.

El trabajo consistir\'a en estudiar distintos aspectos de los siguientes m\'etodos: PageRank, HITS, e \textsc{In-deg}, \'este \'ultimo consiste
en definir el ranking de las p\'aginas utilizando solamente la cantidad de ejes entrantes a cada una de ellas, orden\'andolos en forma
decreciente. Para tener una descripci\'on m\'as completa de los dos primeros m\'etodos, se propone:
\begin{enumerate}
\item Considerar el trabajo de Kleinberg \cite{Kleinberg} con los detalles sobre HITS, en particular las secciones 1, 2 y 3.
\item Considerar el trabajo de Bryan y Leise \cite{Bryan2006} donde se explica la intuci\'on y algunos detalles t\'ecnicos respecto a PageRank. Adem\'as, 
en Kamvar et al. \cite{Kamvar2003} se propone una mejora del mismo. Si bien esta mejora queda fuera de los alcances del trabajo, en la Secci\'on 1 se
presenta una buena formulaci\'on del algoritmo. En base a su definici\'on, $P_2$ no es una matriz esparsa. Sin embargo, en Kamvar et al. 
\cite[Algoritmo 1]{Kamvar2003} se propone una forma alternativa para computar $x^{(k+1)} = P_2 x^{(k)}$. Este resultado puede ser utilizado
para mejorar el almacenamiento de los datos.
\item (Opcional) Completar la demostraci\'on del Teorema 3.1 de Kleinberg \cite{Kleinberg}, incluyendo el detalle de los puntos que el autor asume como 
triviales.
\end{enumerate}

En la pr\'actica, el grafo que representa la red de p\'aginas suele ser esparso, es decir, una p\'agina posee relativamente pocos links
de salida comparada con el n\'umero total de p\'aginas. A su vez, dado que $n$ tiende a ser un n\'umero muy grande, es importante tener
en cuenta este hecho a la hora de definir las estructuras de datos a utilizar. Luego, desde el punto de vista de implementaci\'on se pide
utilizar alguna de las siguientes estructuras de datos para la representaci\'on de las matrices esparsas: \emph{Dictionary of Keys} (dok), 
\emph{Compressed Sparse Row} (CSR) o \emph{Compressed Sparse Column} (CSC). Se deber\'a incluir una justificaci\'on respecto a la elecci\'on 
que consdiere el contexto de aplicaci\'on. Una vez definida la estructura a utilizar, se deber\'a implementar el algoritmo HITS utilizando
las ecuaciones (\ref{eq:auth-update-math}) y (\ref{eq:hub-update-math}). Para el caso de PageRank, se debe implementar el m\'etodo de la
potencia para calcular el autovector principal.

En funci\'on de la experimentaci\'on, se deber\'a realizar un estudio particular para cada algoritmo (tanto en t\'erminos de comportamiento
del mismo, como una evaluaci\'on de los resultados obtenidos) y luego se proceder\'a a comparar cualitativamente los rankings generados.
La experimentaci\'on deber\'a incluir como m\'inimo los siguientes experimentos:
\begin{enumerate}
\item Estudiar la convergencia de PageRank, analizando la evoluci\'on de la norma Manhattan (norma $L_1$) entre dos iteraciones sucesivas. Comparar
los resultados obtenidos para al menos dos instancias de tama\~no mediano-grande, variando el valor de $c$. Opcional: Establecer una relaci\'on 
con la proporci\'on entre $\lambda_1 = 1$ y $|\lambda_2|$.
\item Estudiar la convergencia de los vectores de peso $x$ e $y$ para HITS de forma similar al punto anterior.
\item Estudiar el tiempo de c\'omputo requerido por PageRank y HITS. Si bien ambos pueden se aplicados sobre una red gen\'erica, cada algoritmo 
tiene un contexto particular de aplicaci\'on. Estudiar como impacta el factor temporal en este sentido.
\item Estudiar cualitativamente los rankings obtenidos por los tres m\'etodos. Para ello, se sugiere considerar distintos ejemplos de b\'uquedas
de p\'aginas web\footnote{La c\'atedra adjunta casos de \emph{benchmark} que representan sub-redes obtenidas en base a b\'usquedas tem\'aticas}.
Analizar los resultados individualmente en una primera etapa, y luego realizar un an\'alisis comparativo entre los tres rankings obtenidos.
\item Para cada algoritmo, proponer ejemplos de tama\~no peque\~no que ilustren el comportamiento esperado (puede ser utilizando las instancias
provistas por la c\'atedra o generadas por el grupo).
\end{enumerate}

Finalmente, y en base a la experimentaci\'on realizada, buscamos resolver el problema planteado originalmente: dada una foto de la red, con sus
interconexiones entre p\'aginas, supongamos que tenemos los pesos (ranking) asignados por uno de los algoritmos estudiados. ?`Cu\'al ser\'ia la
estrategia que le sugiere al cliente para mejorar su correspondiente ranking? Para este \'ultimo punto, suponer que es posible \emph{negociar}
que una p\'agina apunte a nuestro sitio, y que la cantidad de estas negociaciones que podemos tener es acotada.

\vskip 5pt
\noindent\textbf{Par\'ametros y formato de archivos}
\vskip 5pt

El programa deber\'a tomar por l\'inea de comandos dos par\'ametros. El primero de ellos contendr\'a la informaci\'on del experimento, incluyendo
el m\'etodo a ejecutar (\verb+alg+, 0 para PageRank, 1 para HITS, 2 para \textsc{In-deg}), la probabilidad de teletransportaci\'on $c$ en el caso
de PageRank (que valdr\'a -1 si \verb+alg+ no es 0), el tipo de instancia, el \emph{path} al archivo/directorio conteniendo la definici\'on de la red (que debe ser relativa
al ejecutable, o el path absoluto al archivo) y el valor de 
tolerancia utilizado en el criterio de parada impuesto a cada m\'etodo. El siguiente ejemplo muestra un caso donde se pide ejecutar PageRank, con una
probabilidad de teletransportaci\'on de 0.85, sobre la red descripta en \verb+red-1.txt+ (que se encuentra en el directorio \verb+tests/+) y con una 
tolerancia de corte de $0.0001$.
\begin{verbatim}
0 0.85 0 tests/red-1.txt 0.0001
\end{verbatim}

Para la definici\'on del grafo que representa la red, se consideran dos bases de datos de instancias con sus correspondientes formatos. La primera
de ellas es el conjunto provisto en SNAP \cite{SNAP} (el tipo de instancia es 0), con redes de tama\~no grande obtenidos a partir de datos reales. Adem\'as, se consideran las 
instancias propuestas en \cite{dataset}. Estas instancias son de tama\~no mediano, obtenidas tambi\'en en base a datos reales, y corresponden a redes
tem\'aticas obtenidas a partir de una b\'usqueda particular. Para cada nodo de la red se tiene: la direccion URL, una breve descripci\'on, y las 
p\'aginas a las cuales apunta. Si bien algunas de las URL ya no son v\'alidas, la descripci\'on permite tener algo m\'as de informaci\'on para 
realizar un an\'alisis cualitativo.

En el caso de la base de SNAP, los archivos contiene primero cuatro l\'ineas con informaci\'on sobre la instancia (entre ellas, $n$ y la cantidad
total de links, $m$) y luego $m$ l\'ineas con los pares $i$, $j$ indicando que $i$ apunta a $j$. A modo de ejemplo, a continuaci\'on se muestra el 
archivo de entrada correspondiente a la red propuesta en Bryan y Leise \cite[Figura 1]{Bryan2006}: 

\begin{verbatim}
# Directed graph (each unordered pair of nodes is saved once): 
# Example shown in Bryan and Leise.
# Nodes: 4 Edges: 8 
# FromNodeId    ToNodeId
1   2
1   3
1   4
2   3
2   4
3   1
4   1
4   3
\end{verbatim}

Para la otras instancias, en \cite{dataset} puede encontrarse una descripci\'on del formato propuesto (el tipo de instancia ser\'a 1 en este caso).

Una vez ejecutado el algoritmo, el programa deber\'a generar un archivo de salida que contenga una l\'inea por cada
p\'agina ($n$ l\'ineas en total), acompa\~nada del puntaje obtenido por el algoritmo PageRank/\textsc{In-deg}. En el caso de HITS, el archivo 
contendr\'a $2n$ l\'ineas, las primeras $n$ con el \emph{peso de autoridad} y las segundas $n$ con el \emph{peso de hub} para los v\'ertices
$1,\dots.n$.

Para generar instancias, es posible utilizar el c\'odigo Python provisto por la c\'atedra. La utilizaci\'on del mismo se
encuentra descripta en el archivo README. Es importante mencionar que, para que el mismo funcione, es
necesario tener acceso a Internet. En caso de encontrar un bug en el mismo, por favor contactar a los docentes de la
materia a trav\'es de la lista. Desde ya, el c\'odigo puede ser modificado por los respectivos grupos agregando todas
aquellas funcionalidades que consideren necesarias.

\vskip 5pt

\hrule

\vskip 5pt


{\bf \underline{Fechas de entrega}}
\begin{itemize}
 \item \emph{Formato Electr\'onico:} S\'abado 11 de Octubre de 2014, hasta las 23:59 hs, enviando el trabajo (informe +
 c\'odigo) a la direcci\'on \verb+metnum.lab@gmail.com+. El subject del email debe comenzar con el texto \verb+[TP2]+
 seguido de la lista de apellidos  de los integrantes del grupo.
 \item \emph{Formato f\'isico:} Mi\'ercoles 15 de Octubre de 2014, a las 17 hs. en la clase te\'orica.
\end{itemize}

\noindent \textbf{Importante:} El horario es estricto. Los correos recibidos despu\'es de la hora indicada ser\'an considerados re-entrega.  

\bibliographystyle{plain}
\bibliography{tp2}
\end{document}

